#include "surface_texte.h"

extern const char ecriture_texte[] = "Impossible d'ecrire un texte";

surface_texte::surface_texte(std::string txt, bool gros, int x, int y, bool v, int z) throw(erreur) : surface_affichable(module_interface::instance().generer_texte(txt, gros), x, y, v, z), texte_(txt), utilise_grosse_police_(gros) {
	if(!surface_)
		throw une_erreur<ecriture_texte>();
}

/**
 * Régénère la surface avec le texte courant. Fait de l'allocation/désallocation
 * dynamique de mémoire, alors attention !
 */
void surface_texte::generer_surface() throw(erreur) {
	if(surface_)
		SDL_FreeSurface(surface_);
	
	surface_ = module_interface::instance().generer_texte(texte_, utilise_grosse_police_);
	
	module_interface::instance().demander_rafraichir();
	
    if(!surface_)
        throw une_erreur<ecriture_texte>();
}

void surface_texte::grosse_police(bool n) throw(erreur) {
	utilise_grosse_police_ = n;
	generer_surface();
}

void surface_texte::texte(std::string nouveau_texte) throw(erreur) {
	texte_ = nouveau_texte;
	generer_surface();
}
